import QRCode from "qrcode";
import html2canvas from "html2canvas";

export const qrSet = {
  width: 120,
  height: 120,
  colorDark: '#000000',
  colorLight: '#ffffff'
}

export function downloadImg(element) {
  html2canvas(element, {
    allowTaint: true,
    useCORS: true,    // 设置跨域
    tainttest: true,  // 检测每张图片都已经加载完成
    backgroundColor: null, //背景色, 转换图片可能会有白色底色，不要的话就null
  }).then((canvas) => {
    const link = document.createElement("a"); // 创建一个超链接对象实例
    link.download = Date.now() + '.png'; // 设置要下载的图片的名称
    link.href = canvas.toDataURL(); // 将图片的URL设置到超链接的href中
    link.click(); // 触发超链接的点击事件
  })
}

export function disposeAls(als) {
  const yhjg_params = [
    '',
    'tra_',
    'ret_',
    'week_',
    'night_'
  ]
  const fyhjg_params = [
    '',
    'week_',
    'night_',
    'mc_',
    'cf_',
    'ca_',
    'else_',
    'p2p_',
    'com_',
    'sloan_',
    'cons_',
    'nsloan_',
    'finlea_',
    'autofin_'
  ]

  const fljd_params = [
    'rel',
    'cooff',
    'caoff',
    'pdl',
    'coon',
    'caon',
    'af',
    'oth'
  ]

  const pub_params = [
    'min_monnum',
    'max_monnum',
    'tot_mons',
    'min_inteday',
    'max_inteday',
    'avg_monnum'
  ]
  const myzhtj = ['次', '次', '个月', '天', '天', '次',]

  let yhjg = []
  let fyhjg = []
  let fljd = []
  let yftj = []
  let time_crecle = ['d7', 'd15', 'm1', 'm3', 'm6', 'm12']

  for (let i = 0; i < time_crecle.length; i++) {
    const tc = time_crecle[i]
    if (Object.keys(als[tc]).length == 0) {
      yhjg.push(['0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家'])
      fyhjg.push(['0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家'])
      fljd.push(['0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家'])
      if (i > 2) {
        yftj.push(['0次 | 0次 | 0次', '0次 | 0次 | 0次', '0月 | 0月 | 0月', '0天 | 0天 | 0天', '0天 | 0天 | 0天', '0次 | 0次 | 0次'])
      }
    } else {
      const alsItem = als[tc]
      // 银行处理
      const idBank = alsItem.id != undefined ? alsItem.id.bank != undefined ? alsItem.id.bank : null : null
      const cellBank = alsItem.cell != undefined ? alsItem.cell.bank != undefined ? alsItem.cell.bank : null : null
      let idOrCell = []
      if (idBank != null && cellBank != null) {
        for (let j = 0; j < yhjg_params.length; j++) {
          let item = yhjg_params[j]
          let allnum = tranStr(idBank[item + 'allnum']) + tranStr(cellBank[item + 'allnum'])
          let orgnum = tranStr(idBank[item + 'orgnum']) + tranStr(cellBank[item + 'orgnum'])
          idOrCell.push(allnum + '次 | ' + orgnum + '家')
        }
      } else if (idBank != null && cellBank == null) {
        for (let j = 0; j < yhjg_params.length; j++) {
          let item = yhjg_params[j]
          let allnum = tranStr(idBank[item + 'allnum'])
          let orgnum = tranStr(idBank[item + 'orgnum'])
          idOrCell.push(allnum + '次 | ' + orgnum + '家')
        }
      } else if (idBank == null && cellBank != null) {
        for (let j = 0; j < yhjg_params.length; j++) {
          let item = yhjg_params[j]
          let allnum = tranStr(cellBank[item + 'allnum'])
          let orgnum = tranStr(cellBank[item + 'orgnum'])
          idOrCell.push(allnum + '次 | ' + orgnum + '家')
        }
      } else {
        idOrCell = ['0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家']
      }
      yhjg.push(idOrCell)

      // 非银处理
      const idNBank = alsItem.id != undefined ? alsItem.id.nbank != undefined ? alsItem.id.nbank : null : null
      const cellNBank = alsItem.cell != undefined ? alsItem.cell.nbank != undefined ? alsItem.cell.nbank : null : null
      idOrCell = []
      if (idNBank != null && cellNBank != null) {
        for (let j = 0; j < fyhjg_params.length; j++) {
          let item = fyhjg_params[j]
          let allnum = tranStr(idNBank[item + 'allnum']) + tranStr(cellNBank[item + 'allnum'])
          let orgnum = tranStr(idNBank[item + 'orgnum']) + tranStr(cellNBank[item + 'orgnum'])
          idOrCell.push(allnum + '次 | ' + orgnum + '家')
        }
      } else if (idNBank != null && cellNBank == null) {
        for (let j = 0; j < fyhjg_params.length; j++) {
          let allnum = tranStr(idNBank[fyhjg_params[j] + 'allnum'])
          let orgnum = tranStr(idNBank[fyhjg_params[j] + 'orgnum'])
          idOrCell.push(allnum + '次 | ' + orgnum + '家')
        }
      } else if (idNBank == null && cellNBank != null) {
        for (let j = 0; j < fyhjg_params.length; j++) {
          let allnum = tranStr(cellNBank[fyhjg_params[j] + 'allnum'])
          let orgnum = tranStr(cellNBank[fyhjg_params[j] + 'orgnum'])
          idOrCell.push(allnum + '次 | ' + orgnum + '家')
        }
      } else {
        idOrCell = ['0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家', '0次 | 0家']
      }
      fyhjg.push(idOrCell)

      // 分类借贷统计
      const tjItem = []
      for (let j = 0; j < fljd_params.length; j++) {
        let fp = fljd_params[j]
        let id = alsItem.id != undefined ? alsItem.id[fp] != undefined ? alsItem.id[fp] : 0 : 0
        let cell = alsItem.cell != undefined ? alsItem.cell[fp] != undefined ? alsItem.cell[fp] : 0 : 0
        if (id != 0 && cell != 0) {
          tjItem.push((tranStr(id.allnum) + tranStr(cell.allnum)) + '次 | ' + (tranStr(id.orgnum) + tranStr(cell.orgnum)) + '家')
        } else if (id != 0 && cell == 0) {
          tjItem.push(tranStr(id.allnum) + '次 | ' + tranStr(id.orgnum) + '家')
        } else if (id == 0 && cell != 0) {
          tjItem.push(tranStr(cell.allnum) + '次 | ' + tranStr(cell.orgnum) + '家')
        } else {
          tjItem.push('0次 | 0家')
        }
      }
      fljd.push(tjItem)

      // 月份以上统计
      if (i > 2) {
        let yftjItem = []
        for (let j = 0; j < pub_params.length; j++) {
          let fp = pub_params[j]
          // 统计
          let source_id_item = alsItem.id != undefined ? alsItem.id[fp] != undefined ? alsItem.id[fp] : 0 : 0
          let source_cell_item = alsItem.cell != undefined ? alsItem.cell[fp] != undefined ? alsItem.cell[fp] : 0 : 0
          if (j == 3) {
            yftjItem[j] = (tranStr(source_id_item) > tranStr(source_cell_item) ? tranStr(source_cell_item) : tranStr(source_id_item)) + myzhtj[j]
          } else if (j == 4) {
            yftjItem[j] = (tranStr(source_id_item) < tranStr(source_cell_item) ? tranStr(source_cell_item) : tranStr(source_id_item)) + myzhtj[j]
          } else {
            let n = tranStr(source_id_item) + tranStr(source_cell_item)
            yftjItem[j] = (j == 2 ? n / 2 : n) + myzhtj[j]
          }
          let num = 0
          // 银行
          if (idBank != null && cellBank != null) {
            if (j == 3) {
              num = (tranStr(idBank[fp]) > tranStr(cellBank[fp]) ? tranStr(cellBank[fp]) : tranStr(idBank[fp]))
            } else if (j == 4) {
              num = (tranStr(idBank[fp]) < tranStr(cellBank[fp]) ? tranStr(cellBank[fp]) : tranStr(idBank[fp]))
            } else {
              num = tranStr(idBank[fp]) + tranStr(cellBank[fp])
              num = j == 2 ? num / 2 : num
            }
          } else if (idBank != null && cellBank == null) {
            num = tranStr(idBank[fp])
          } else if (idBank == null && cellBank != null) {
            num = tranStr(cellBank[fp])
          }
          yftjItem[j] += (' | ' + num + myzhtj[j])

          // 非银
          num = 0
          // console.log(idNBank, cellNBank, fp)
          if (idNBank != null && cellNBank != null) {
            if (j == 3) {
              num = (tranStr(idNBank[fp]) > tranStr(cellNBank[fp]) ? tranStr(cellNBank[fp]) : tranStr(idNBank[fp]))
            } else if (j == 4) {
              num = (tranStr(idNBank[fp]) < tranStr(cellNBank[fp]) ? tranStr(cellNBank[fp]) : tranStr(idNBank[fp]))
            } else {
              num = tranStr(idNBank[fp]) + tranStr(cellNBank[fp])
              num = j == 2 ? num / 2 : num
            }
          } else if (idNBank != null && cellNBank == null) {
            num = tranStr(idNBank[fp])
          } else if (idNBank == null && cellNBank != null) {
            num = tranStr(cellNBank[fp])
          }
          yftjItem[j] += (' | ' + num + myzhtj[j])
        }
        yftj.push(yftjItem)
      }
    }
  }
  return {
    'yhjg': transposeArray(yhjg),
    'fyhjg': transposeArray(fyhjg),
    'fljd': transposeArray(fljd),
    'yftj': transposeArray(yftj)
  }
}

export function tranStr(str) {
  return !str || Object.is(str, NaN) ? 0 : Number.parseInt(str);
}

function transposeArray(array) {
  return array[0].map((col, i) => array.map(row => row[i]));
}

export function getDeepData(data, keys) {
  let i = 0
  while (i < keys.length) {
    if (data[keys[i]] == undefined) {
      return '无'
    } else {
      data = data[keys[i]]
      i++
    }
  }
  return data == '' ? '无' : data
}
